package com.juzhencms.apps.busi.service;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.juzhencms.apps.base.common.config.Config;
import com.juzhencms.apps.base.common.database.DBTable;
import com.juzhencms.apps.base.common.util.DateUtil;
import com.juzhencms.apps.base.common.util.HttpUtil;
import com.juzhencms.apps.base.common.util.StringUtil;
import lombok.extern.slf4j.Slf4j;

@Service
@Slf4j
public class SiteSettingService extends CommonService{
	/*目前access_token的有效期通过返回的expire_in来传达，
	目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。
	在刷新过程中，中控服务器可对外继续输出的老access_token，
	此时公众平台后台会保证在5分钟内，新老access_token都可用，这保证了第三方业务的平滑过渡；*/
	/*public String getWeixinAccessToken(int id) {
		// 获取weixin_access_token 参数判断是否过期，如果过期主动获取
		
		String sql="SELECT weixin_appid,weixin_appsecret,weixin_access_token,access_token_expires FROM "+DBTable.site+" where del_flag=0 and publish=1 and  id=?";
		Map siteInfo=this.getJdbcDao().queryRow(sql, new Object[] {id});
		if(siteInfo!=null && siteInfo.size()>0) {    		
			if(StringUtil.isNotNullOrEmpty(siteInfo.get("weixin_access_token"))) {
				//判断是否失效
				Date access_token_expires=(Date) siteInfo.get("access_token_expires");
				Date now=new Date();    			
				boolean compareResult = DateUtil.compareDate(access_token_expires,now);
				if(compareResult) { //未过期
					return siteInfo.get("weixin_access_token")+"";
				}  			
			}    		
			if(StringUtil.isNotNullOrEmpty(siteInfo.get("weixin_appid")) && StringUtil.isNotNullOrEmpty(siteInfo.get("weixin_appsecret"))) {
				String url=Config.getValue("weixin.apiURL")+"/token?grant_type=client_credential&appid="+siteInfo.get("weixin_appid")+"&secret="+siteInfo.get("weixin_appsecret");
				String result = HttpUtil.sendGetUrl(url);    			
				Map resultMap=JSON.parseObject(result,Map.class);
				if(resultMap.get("errcode")!=null) {
					return null;
				}else {    			
	    			Map newToken=new HashMap();
	    			newToken.put("weixin_access_token", resultMap.get("access_token"));
	    			newToken.put("id", id);
	    			//{"access_token":"ACCESS_TOKEN","expires_in":7200}
	    			int expires_in=new Integer(resultMap.get("expires_in")+"");    			;
	    			newToken.put("access_token_expires", DateUtil.addSecond(new Date(),expires_in));
	    			this.getJdbcDao().updateObj(DBTable.site, newToken, "id");
	    			return resultMap.get("access_token")+"";
				}
			}else return null;
			
		} else return null;
	}*/
}
